outside of the method definitions. Rather, all communication with the object should generally be accomplished by calling its member functions, or - in OOP terminology - sending it MESSAGES:
jack->set();
By restricting access in this way, the implementation of the instance variables may later be changed, along with the appropriate methods, without affecting the functions which declare and use objects of this class.
Notice that the set() member function can only be accessed by referring to the identifier of a pointer to an object of this class. In effect the scope of the function is restricted to the scope of the object identifier. As is the case with variables having class scope, member functions are also accessible from other member functions of the same class. In this case the name of the function is given directly, without need for the '->' operator.
To demonstrate this we'll override the init() method inherited from Generic_Class